home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / sbprolog / v3 / sbp_iris < prev    next >
Text File  |  1993-08-14  |  18KB  |  574 lines

  1. From scotth@SGI.COM Thu Jan  5 21:08:09 1989
  2. Received: from megaron.arizona.edu by granjon.arizona.edu; Thu, 5 Jan 89 21:08:04 MST
  3. Received: from noao.arizona.edu by megaron.arizona.edu (5.59-1.7/15) via SMTP
  4.     id AA06151; Thu, 5 Jan 89 21:09:26 MST
  5. Received: from HANDIES.UCAR.EDU by noao.edu (5.59/SAG.G11)
  6.     id AA05032; Thu, 5 Jan 89 21:07:56 MST; for arizona.edu!debray@arizona.edu
  7. Received: from SGI.COM by ncar.UCAR.EDU (5.58/1.00.UUCP-MOD.8-11-85)
  8.     id AA10727; Thu, 5 Jan 89 19:28:40 MST
  9. Received: from harlie.sgi.com by sgi.sgi.com (5.52/880418.SGI)
  10.     (for ncar.ucar.edu!noao!arizona!arizona.edu!debray) id AA26178; Thu, 5 Jan 89 14:10:26 PST
  11. Received: from localhost.SGI.COM by harlie.sgi.com (5.52/880418.SGI)
  12.     (for debray@arizona.edu) id AA18498; Thu, 5 Jan 89 14:10:21 PST
  13. Message-Id: <8901052210.AA18498@harlie.sgi.com>
  14. To: debray@arizona.edu
  15. Subject: SBProlog v3.0 diffs for IRIS system
  16. Date: Thu, 05 Jan 89 14:10:19 PST
  17. From: scotth@SGI.COM
  18. Status: RO
  19.  
  20. Here are the diffs for the sbp_v3.0.tar.Z I picked up several weeks ago.
  21. I have included the diffs for the source code (and the Makefile), along
  22. with the output of the benchmarks run on my system. I did not fully
  23. implement an AT&T SysV version of the time.c functions, only the one I 
  24. currently have any need of.
  25.  
  26. Some notes about the port:
  27.  
  28. 1) Because SGI uses a SysV r3.1 based kernel with most of BSD 4.3 as
  29.    enhancements, when I was sure that the replacement function was vanilla
  30.    SysV, I used "#ifdef ATT", else I used "#ifdef IRIS_4D", and I used an
  31.    "#ifdef BSD4" around the areas I needed to comment out.
  32.  
  33. 2) Although the current rev of the OS supports MIMD tightly coupled multi-
  34.    processing, I neither compiled for that option, nor tested in that
  35.    environment.
  36.  
  37. 3) The environment I compiled, linked, and run on is:
  38.  
  39.    IRIS 4D/70G (a MIPS R2000 RISC processor running at 12.5 MHz) w/16MB memory,
  40.    IRIX 3.1 release operating system (see above),
  41.    -O4 optimization level for the benchmark results (make sim).
  42.  
  43. Recompiling with -O4 optimization (make sim) improved the benchmark results
  44. by various amounts: from 1% improvement (for walk_term_rec) to over 40%
  45. (for access_unit); most results were 20-25% improvement over compiling with
  46. the default optimization (make sbprolog).
  47.  
  48. I ran the nrev (Naive Reverse) benchmark for 10000 iterations, the Pereira
  49. benchmarks were run unchanged.
  50.  
  51. Mostly for my own information, I decided to time the compile of the 
  52. optimized version (time make sim). This is on a mostly otherwise idle
  53. system (mostly just me doing "ps -l" to see what was going on..
  54.  
  55. 223.4u 27.6s 5:56 70%
  56.  
  57. and at its peak, the ucode (global) optimizer used 8.8MB of virtual memory
  58. (must have paged out everything else).
  59.  
  60. Thanks for all your help.
  61. Here is the diffs in a shar file.
  62. ---------------------------------------------
  63. #!/bin/sh
  64. # to extract, remove the header and type "sh filename"
  65. if `test ! -d ./diffs`
  66. then
  67.   mkdir ./diffs
  68.   echo "mkdir ./diffs"
  69. fi
  70. if `test ! -s ./diffs/Makefile.diff`
  71. then
  72. echo "writing ./diffs/Makefile.diff"
  73. cat > ./diffs/Makefile.diff << '\Rogue\Monster\'
  74. *** Makefile.orig    Thu Jan  5 13:10:36 1989
  75. --- Makefile    Thu Jan  5 11:36:07 1989
  76. ***************
  77. *** 1,40 ****
  78. ! CFLAGS = -c -g 
  79.   #CC = /usr/local/gcc
  80.   CC = cc
  81.   OBJ1 = main.o dispatch.o init.o float.o io.o sub_inst.o loader.o dis.o
  82.   OBJ2 = parse_oprnd.o print_inst.o unify.o load_work.o aux.o evalexp.o
  83. ! OBJS = $(OBJ1) $(OBJ2)
  84.   
  85. ! sbprolog  : $(OBJS) builtin/builtin
  86. !     $(CC) -o sbprolog $(OBJS) builtin/builtin
  87. !     strip sbprolog
  88. !     rm $(OBJS)
  89.   
  90.   main.o : main.c simdef.h inst.h aux.h sim.h
  91.       $(CC) $(CFLAGS) main.c
  92.   dispatch.o: dispatch.c inst.h
  93.       $(CC) $(CFLAGS) dispatch.c 
  94.   dis.o: dis.c sim.h inst.h
  95.       $(CC) $(CFLAGS) dis.c 
  96.   init.o : init.c sim.h inst.h aux.h
  97.       $(CC) $(CFLAGS) init.c
  98.   float.o : float.c aux.h sim.h
  99.       $(CC) $(CFLAGS) float.c
  100.   io.o : io.c aux.h sim.h 
  101.       $(CC) $(CFLAGS) io.c 
  102.   sub_inst.o : sub_inst.c sim.h aux.h
  103.       $(CC) $(CFLAGS) sub_inst.c 
  104.   loader.o : loader.c sim.h inst.h 
  105.       $(CC) $(CFLAGS) loader.c 
  106.   parse_oprnd.o : parse_oprnd.c inst.h sim.h
  107.       $(CC) $(CFLAGS) parse_oprnd.c 
  108.   print_inst.o : print_inst.c inst.h sim.h
  109.       $(CC) $(CFLAGS) print_inst.c 
  110.   unify.o : unify.c sim.h aux.h
  111.       $(CC) $(CFLAGS) unify.c 
  112.   load_work.o : load_work.c sim.h aux.h
  113.       $(CC) $(CFLAGS) load_work.c 
  114.   aux.o : aux.c
  115.       $(CC) $(CFLAGS) aux.c 
  116.   evalexp.o : evalexp.c
  117.       $(CC) $(CFLAGS) evalexp.c 
  118. --- 1,129 ----
  119. ! # makefile for SBProlog on the Silicon Graphics IRIS-4D
  120. ! #   (modified so that edge can find all source files)
  121. ! #   mods by S. Henry, Wed Dec 14 16:17:23 PST 1988
  122. ! COPTS = -I. -Ibuiltin -I/usr/include/bsd -DIRIS_4D -DATT
  123. ! CFLAGS = -c -g $(COPTS)
  124. ! #CFLAGS = -c -g -I. -Ibuiltin -I/usr/include/bsd -DIRIS_4D -DDEBUG
  125.   #CC = /usr/local/gcc
  126.   CC = cc
  127. + LD = cc
  128.   OBJ1 = main.o dispatch.o init.o float.o io.o sub_inst.o loader.o dis.o
  129.   OBJ2 = parse_oprnd.o print_inst.o unify.o load_work.o aux.o evalexp.o
  130. ! OBJA = builtin.o meta.o file.o init_branch.o tio.o structure.o token.o thread.o
  131. ! OBJB = name.o buffer.o other.o time.o compare.o substuff.o arith.o saverest.o
  132. ! OBJS = $(OBJ1) $(OBJ2) $(OBJA) $(OBJB)
  133.   
  134. ! SRC1 = main.c dispatch.c init.c float.c io.c sub_inst.c loader.c dis.c
  135. ! SRC2 = parse_oprnd.c print_inst.c unify.c load_work.c aux.c evalexp.c
  136. ! SRCA = builtin/builtin.c builtin/meta.c builtin/file.c builtin/init_branch.c
  137. ! SRCB = builtin/tio.c builtin/structure.c builtin/token.c builtin/thread.c
  138. ! SRCC = builtin/name.c builtin/buffer.c builtin/other.c builtin/time.c
  139. ! SRCD = builtin/compare.c builtin/substuff.c builtin/arith.c builtin/saverest.c
  140. ! SRCS = $(SRC1) $(SRC2) $(SRCA) $(SRCB) $(SRCC) $(SRCD)
  141.   
  142. + HS   = builtin/builtin.h sim.h aux.h
  143. + sbprolog  : $(OBJS)
  144. +     $(LD) -o sbprolog $(OBJS)  -lsun -lbsd -lm -lc_s
  145. + #    strip sbprolog
  146. + #    rm $(OBJS)
  147. + # optimize the #@!$ out of the program (-O4 is the maximum optimization
  148. + #    level under IRIX release 3.x (MIPS cc r1.1))
  149. + sim : $(SRCS)
  150. +     $(LD) -O4 -Olimit 1500 $(COPTS) $(SRCS) -o sim -lsun -lbsd -lm -lc_s
  151.   main.o : main.c simdef.h inst.h aux.h sim.h
  152.       $(CC) $(CFLAGS) main.c
  153.   dispatch.o: dispatch.c inst.h
  154.       $(CC) $(CFLAGS) dispatch.c 
  155.   dis.o: dis.c sim.h inst.h
  156.       $(CC) $(CFLAGS) dis.c 
  157.   init.o : init.c sim.h inst.h aux.h
  158.       $(CC) $(CFLAGS) init.c
  159.   float.o : float.c aux.h sim.h
  160.       $(CC) $(CFLAGS) float.c
  161.   io.o : io.c aux.h sim.h 
  162.       $(CC) $(CFLAGS) io.c 
  163.   sub_inst.o : sub_inst.c sim.h aux.h
  164.       $(CC) $(CFLAGS) sub_inst.c 
  165.   loader.o : loader.c sim.h inst.h 
  166.       $(CC) $(CFLAGS) loader.c 
  167.   parse_oprnd.o : parse_oprnd.c inst.h sim.h
  168.       $(CC) $(CFLAGS) parse_oprnd.c 
  169.   print_inst.o : print_inst.c inst.h sim.h
  170.       $(CC) $(CFLAGS) print_inst.c 
  171.   unify.o : unify.c sim.h aux.h
  172.       $(CC) $(CFLAGS) unify.c 
  173.   load_work.o : load_work.c sim.h aux.h
  174.       $(CC) $(CFLAGS) load_work.c 
  175.   aux.o : aux.c
  176.       $(CC) $(CFLAGS) aux.c 
  177.   evalexp.o : evalexp.c
  178.       $(CC) $(CFLAGS) evalexp.c 
  179. + #file in the "builtin/" subdirectory
  180. + builtin.o: $(HS) builtin/builtin.c
  181. +     cc $(CFLAGS) builtin/builtin.c
  182. + token.o: $(HS) builtin/token.c
  183. +     cc $(CFLAGS) builtin/token.c
  184. + file.o: $(HS) builtin/file.c
  185. +     cc $(CFLAGS) builtin/file.c
  186. + substuff.o: $(HS) builtin/substuff.c
  187. +     cc $(CFLAGS) builtin/substuff.c
  188. + buffer.o: $(HS) builtin/buffer.c
  189. +     cc $(CFLAGS) builtin/buffer.c
  190. + other.o: $(HS) builtin/other.c
  191. +     cc $(CFLAGS) builtin/other.c
  192. + init_branch.o: builtin/builtin.h builtin/init_branch.c
  193. +     cc $(CFLAGS) builtin/init_branch.c
  194. + meta.o: $(HS) builtin/meta.c
  195. +     cc $(CFLAGS) builtin/meta.c
  196. + name.o: $(HS) builtin/name.c
  197. +     cc $(CFLAGS) builtin/name.c
  198. + structure.o: $(HS)  builtin/structure.c
  199. +     cc $(CFLAGS) builtin/structure.c
  200. + tio.o: $(HS) builtin/tio.c
  201. +     cc $(CFLAGS) builtin/tio.c
  202. + time.o: $(HS) builtin/time.c
  203. +     cc $(CFLAGS) builtin/time.c
  204. + compare.o: $(HS) builtin/compare.c
  205. +     cc $(CFLAGS) builtin/compare.c
  206. + arith.o: builtin/arith.c $(HS)
  207. +     cc $(CFLAGS) builtin/arith.c
  208. + saverest.o: builtin/saverest.c $(HS)
  209. +     cc $(CFLAGS) builtin/saverest.c
  210. + thread.o:  $(HS) builtin/thread.c
  211. +     cc $(CFLAGS) builtin/thread.c
  212. \Rogue\Monster\
  213. else
  214.   echo "will not over write ./diffs/Makefile.diff"
  215. fi
  216. if `test ! -s ./diffs/other.c.diff`
  217. then
  218. echo "writing ./diffs/other.c.diff"
  219. cat > ./diffs/other.c.diff << '\Rogue\Monster\'
  220. *** builtin/other.c.orig    Thu Jan  5 13:09:59 1989
  221. --- builtin/other.c    Thu Dec 15 14:22:22 1988
  222. ***************
  223. *** 79,84 ****
  224. --- 79,89 ----
  225.       return(i);
  226.   }
  227.   
  228. + #ifdef IRIS_4D
  229. + #include <sys.s>
  230. + #else
  231. + #define SYSVoffset 0
  232. + #endif
  233.   
  234.   b_SYSCALL()  /* r1: call # ; R2: a list of parameters; R3: returned value */
  235.   {
  236. ***************
  237. *** 89,109 ****
  238.       op1 = GREGC(1);  DEREF(op1);
  239.       n   = INTVAL(op1);              /* syscall number */
  240.       switch ( getgenargs(2) ) {
  241. !       case  1: r = syscall(n);
  242.                  break;
  243. !       case  2: r = syscall(n, call_arg[1]);
  244.                  break;
  245. !       case  3: r = syscall(n, call_arg[1], call_arg[2]);
  246.                  break;
  247. !       case  4: r = syscall(n, call_arg[1], call_arg[2], call_arg[3]);
  248.                  break;
  249. !       case  5: r = syscall(n, call_arg[1], call_arg[2], call_arg[3],
  250.                                 call_arg[4]);
  251.                  break;
  252. !       case  6: r = syscall(n, call_arg[1], call_arg[2], call_arg[3],
  253.                                 call_arg[4], call_arg[5]);
  254.                  break;
  255. !       case  7: r = syscall(n, call_arg[1], call_arg[2], call_arg[3],
  256.                                 call_arg[4], call_arg[5], call_arg[6]);
  257.                  break;
  258.         default: quit( "Too many arguments for syscall\n" );
  259. --- 94,114 ----
  260.       op1 = GREGC(1);  DEREF(op1);
  261.       n   = INTVAL(op1);              /* syscall number */
  262.       switch ( getgenargs(2) ) {
  263. !       case  1: r = syscall(n + SYSVoffset);
  264.                  break;
  265. !       case  2: r = syscall(n + SYSVoffset, call_arg[1]);
  266.                  break;
  267. !       case  3: r = syscall(n + SYSVoffset, call_arg[1], call_arg[2]);
  268.                  break;
  269. !       case  4: r = syscall(n + SYSVoffset, call_arg[1], call_arg[2], call_arg[3]);
  270.                  break;
  271. !       case  5: r = syscall(n + SYSVoffset, call_arg[1], call_arg[2], call_arg[3],
  272.                                 call_arg[4]);
  273.                  break;
  274. !       case  6: r = syscall(n + SYSVoffset, call_arg[1], call_arg[2], call_arg[3],
  275.                                 call_arg[4], call_arg[5]);
  276.                  break;
  277. !       case  7: r = syscall(n + SYSVoffset, call_arg[1], call_arg[2], call_arg[3],
  278.                                 call_arg[4], call_arg[5], call_arg[6]);
  279.                  break;
  280.         default: quit( "Too many arguments for syscall\n" );
  281. \Rogue\Monster\
  282. else
  283.   echo "will not over write ./diffs/other.c.diff"
  284. fi
  285. if `test ! -s ./diffs/sub_inst.c.diff`
  286. then
  287. echo "writing ./diffs/sub_inst.c.diff"
  288. cat > ./diffs/sub_inst.c.diff << '\Rogue\Monster\'
  289. *** sub_inst.c.orig    Thu Jan  5 13:09:11 1989
  290. --- sub_inst.c    Wed Dec 14 13:34:50 1988
  291. ***************
  292. *** 5,11 ****
  293. --- 5,13 ----
  294.   #include "aux.h"
  295.   
  296.   
  297. + #ifdef BSD4
  298.   struct sigvec vec;
  299. + #endif
  300.   
  301.   /* set interrupt code in reg 2 and return ep of interrupt handler */
  302.   LONG_PTR  set_intercode(intcode)
  303. ***************
  304. *** 33,38 ****
  305. --- 35,41 ----
  306.   
  307.   arm_intercept()
  308.   {
  309. + #ifdef BSD4
  310.       /* set up interrupt routine */
  311.       vec.sv_handler = intercept_proc;
  312.       vec.sv_mask = 0;
  313. ***************
  314. *** 38,43 ****
  315. --- 41,50 ----
  316.       vec.sv_mask = 0;
  317.       vec.sv_onstack = 0;
  318.       sigvec(2, &vec, 0);
  319. + #endif
  320. + #ifdef IRIS_4D
  321. +     signal( SIGINT, &intercept_proc);
  322. + #endif
  323.   }
  324.   /****************************************************************************/
  325.   callv_sub()   /* arg from register 1 */
  326. \Rogue\Monster\
  327. else
  328.   echo "will not over write ./diffs/sub_inst.c.diff"
  329. fi
  330. if `test ! -s ./diffs/time.c.diff`
  331. then
  332. echo "writing ./diffs/time.c.diff"
  333. cat > ./diffs/time.c.diff << '\Rogue\Monster\'
  334. *** builtin/time.c.orig    Thu Jan  5 13:10:11 1989
  335. --- builtin/time.c    Thu Jan  5 10:38:10 1989
  336. ***************
  337. *** 1,17 ****
  338.   
  339.   /* time.c */
  340.   
  341.   #include <sys/time.h>
  342.   #include <sys/resource.h>
  343.   #include "builtin.h"
  344.   
  345.   b_CPUTIME()   /* R1: miliseconds */
  346.   {
  347. -     struct rusage   usage;
  348.       int             msec;
  349.   
  350.       getrusage(0, &usage);
  351.       msec =  usage.ru_utime.tv_sec * 1000 + usage.ru_utime.tv_usec / 1000;
  352.       if (!unify(GREGC(1), MAKEINT(msec)))
  353.          {FAIL0;} 
  354.   }
  355. --- 1,46 ----
  356.   
  357.   /* time.c */
  358.   
  359. + #ifdef BSD4
  360.   #include <sys/time.h>
  361.   #include <sys/resource.h>
  362. + #endif
  363. + #ifdef ATT
  364. + #include <sys/types.h>
  365. + #include <sys/times.h>
  366. + #include <sys/param.h>
  367. + #endif
  368.   #include "builtin.h"
  369.   
  370.   b_CPUTIME()   /* R1: miliseconds */
  371.   {
  372.       int             msec;
  373. + #ifdef BSD4
  374. +     struct rusage   usage;
  375.   
  376.       getrusage(0, &usage);
  377.       msec =  usage.ru_utime.tv_sec * 1000 + usage.ru_utime.tv_usec / 1000;
  378. + #else
  379. + #ifdef ATT
  380. +     /*
  381. +      * return the SysV.3 usage stuff
  382. +      */
  383. +     struct tms buffer;
  384. +     long       rc;
  385. +     if ((rc = times(&buffer)) == -1)
  386. +       {
  387. +         msec = 0;
  388. +       }
  389. +     else
  390. +       {
  391. +         msec = buffer.tms_utime * 1000 / HZ;
  392. +       }
  393. + #else
  394. +     msec = 0;
  395. + #endif !IRIS_4D
  396. + #endif !BSD4
  397.       if (!unify(GREGC(1), MAKEINT(msec)))
  398.          {FAIL0;} 
  399.   }
  400. ***************
  401. *** 18,26 ****
  402.   
  403.   b_STATS()   /* r1: code to indicate desired stat; r2: returned stat */
  404.   {
  405.      register LONG       op1;
  406.      register LONG_PTR   top;
  407. -    int                 stat;
  408.      struct rusage       usage;
  409.   
  410.      op1 = GREGC(1); DEREF(op1);
  411. --- 47,56 ----
  412.   
  413.   b_STATS()   /* r1: code to indicate desired stat; r2: returned stat */
  414.   {
  415. +    int                 stat;
  416. + #ifdef BSD4
  417.      register LONG       op1;
  418.      register LONG_PTR   top;
  419.      struct rusage       usage;
  420.   
  421.      op1 = GREGC(1); DEREF(op1);
  422. ***************
  423. *** 52,57 ****
  424. --- 82,90 ----
  425.                 break;
  426.        default: stat = 0;
  427.      }
  428. + #else
  429. +    stat = 0;
  430. + #endif
  431.      if (!unify(GREGC(2), MAKEINT(stat))) 
  432.         {FAIL0;}
  433.   }
  434. \Rogue\Monster\
  435. else
  436.   echo "will not over write ./diffs/time.c.diff"
  437. fi
  438. if `test ! -s ./diffs/unify.c.diff`
  439. then
  440. echo "writing ./diffs/unify.c.diff"
  441. cat > ./diffs/unify.c.diff << '\Rogue\Monster\'
  442. *** unify.c.orig    Thu Jan  5 13:09:00 1989
  443. --- unify.c    Tue Dec 13 16:14:41 1988
  444. ***************
  445. *** 1,7 ****
  446.   /* unify.c */
  447.   
  448. ! #include "/usr5/elegy/sb/sim/src/sim.h"
  449. ! #include "/usr5/elegy/sb/sim/src/aux.h"
  450.   
  451.   extern double     floatval();
  452.   extern         prettymuch_equal();
  453. --- 1,7 ----
  454.   /* unify.c */
  455.   
  456. ! #include "sim.h"
  457. ! #include "aux.h"
  458.   
  459.   extern double     floatval();
  460.   extern         prettymuch_equal();
  461. \Rogue\Monster\
  462. else
  463.   echo "will not over write ./diffs/unify.c.diff"
  464. fi
  465. if `test ! -d ./bench`
  466. then
  467.   mkdir ./bench
  468.   echo "mkdir ./bench"
  469. fi
  470. if `test ! -s ./bench/sim.bench`
  471. then
  472. echo "writing ./bench/sim.bench"
  473. cat > ./bench/sim.bench << '\Rogue\Monster\'
  474. tail_call_atom_atom took (1550 - 290.000000) / 2000 = 0.630000 milli-seconds/iteration
  475. binary_call_atom_atom took (3030 - 290.000000) / 2000 = 1.370000 milli-seconds/iteration
  476. cons_list took (3100 - 280.000000) / 2000 = 1.410000 milli-seconds/iteration
  477. walk_list took (3080 - 280.000000) / 2000 = 1.400000 milli-seconds/iteration
  478. walk_list_rec took (1640 - 280.000000) / 2000 = 0.680000 milli-seconds/iteration
  479. args(1) took (1650 - 290.000000) / 2000 = 0.680000 milli-seconds/iteration
  480. args(2) took (2600 - 300.000000) / 2000 = 1.150000 milli-seconds/iteration
  481. args(4) took (4450 - 290.000000) / 2000 = 2.080000 milli-seconds/iteration
  482. args(8) took (8210 - 300.000000) / 2000 = 3.955000 milli-seconds/iteration
  483. args(16) took (15640 - 290.000000) / 2000 = 7.674999 milli-seconds/iteration
  484. cons_term took (3370 - 280.000000) / 2000 = 1.545000 milli-seconds/iteration
  485. walk_term took (3400 - 280.000000) / 2000 = 1.560000 milli-seconds/iteration
  486. walk_term_rec took (2970 - 280.000000) / 2000 = 1.345000 milli-seconds/iteration
  487. shallow_backtracking took (2150 - 290.000000) / 2000 = 0.930000 milli-seconds/iteration
  488. deep_backtracking took (4210 - 290.000000) / 2000 = 1.960000 milli-seconds/iteration
  489. choice_point took (4580 - 290.000000) / 2000 = 2.145000 milli-seconds/iteration
  490. trail_variables took (5300 - 290.000000) / 2000 = 2.505000 milli-seconds/iteration
  491. medium_unify took (2260 - 280.000000) / 2000 = 0.990000 milli-seconds/iteration
  492. deep_unify took (6390 - 20.000000) / 100 = 63.699997 milli-seconds/iteration
  493. integer_add took (1880 - 140.000000) / 1000 = 1.740000 milli-seconds/iteration
  494. floating_add took (12260 - 150.000000) / 1000 = 12.110001 milli-seconds/iteration
  495. arg(1) took (4060 - 290.000000) / 2000 = 1.885000 milli-seconds/iteration
  496. arg(2) took (4070 - 290.000000) / 2000 = 1.890000 milli-seconds/iteration
  497. arg(4) took (4080 - 290.000000) / 2000 = 1.895000 milli-seconds/iteration
  498. arg(8) took (4070 - 290.000000) / 2000 = 1.890000 milli-seconds/iteration
  499. arg(16) took (4040 - 280.000000) / 2000 = 1.880000 milli-seconds/iteration
  500. index took (5150 - 290.000000) / 2000 = 2.430000 milli-seconds/iteration
  501. assert_unit took (4320 - 0.000000) / 1 = 4320 milli-seconds/iteration
  502. access_unit took (10440 - 20.000000) / 100 = 104.200012 milli-seconds/iteration
  503. slow_access_unit took (1620 - 10.000000) / 10 = 161 milli-seconds/iteration
  504. setof took (2460 - 0.000000) / 10 = 246 milli-seconds/iteration
  505. pair_setof took (3080 - 0.000000) / 10 = 308 milli-seconds/iteration
  506. double_setof took (7140 - 0.000000) / 10 = 714 milli-seconds/iteration
  507. bagof took (900 - 0.000000) / 10 = 90 milli-seconds/iteration
  508. \Rogue\Monster\
  509. else
  510.   echo "will not over write ./bench/sim.bench"
  511. fi
  512. if `test ! -s ./bench/sim.nrev`
  513. then
  514. echo "writing ./bench/sim.nrev"
  515. cat > ./bench/sim.nrev << '\Rogue\Monster\'
  516. 161850
  517. 162360
  518. 254270
  519. 510
  520. 91910
  521. 91400
  522. Lips = 7276.068359
  523. \Rogue\Monster\
  524. else
  525.   echo "will not over write ./bench/sim.nrev"
  526. fi
  527. echo "Finished archive 1 of 1"
  528. exit 0
  529. --------
  530. Scott Henry <scotth@harlie.sgi.com>
  531. Silicon Graphics, Inc.
  532. Mountain View, CA
  533.  
  534.  
  535.  
  536.